package com.x8.mt.controller;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import com.x8.mt.common.GlobalMethodAndParams;
import com.x8.mt.common.Log;
import com.x8.mt.entity.Connectinfo;
import com.x8.mt.entity.Datasource_connectinfo;
import com.x8.mt.entity.Metadata_relationtable;
import com.x8.mt.entity.Metadata_tablefield;
import com.x8.mt.entity.Metadata_tablefieldmapping;
import com.x8.mt.entity.Sourcesystem;
import com.x8.mt.service.ConnectinfoService;
import com.x8.mt.service.Datasource_connectinfoService;
import com.x8.mt.service.Metadata_relationtableService;
import com.x8.mt.service.Metadata_tablefieldService;
import com.x8.mt.service.Metadata_tablefieldmappingService;
import com.x8.mt.service.SourcesystemService;

@CrossOrigin(origins = "*", maxAge = 3600)//解决跨域请求的注解
@Controller
@RequestMapping(value = "/metadata_tablemapping")
public class Metadata_fieldMappingController {
	@Resource
	Datasource_connectinfoService datasource_connectinfoService;
	@Resource
	SourcesystemService sourcesystemService;
	@Resource
	Metadata_relationtableService metadata_relationtableService;
	@Resource
	Metadata_tablefieldService metadata_tablefieldService;
	@Resource
	ConnectinfoService connectinfoService;	
	@Resource
	Metadata_tablefieldmappingService metadata_tablefieldmappingService;
	
	/**
	 * 
	 * 作者:itcoder 
	 * 时间:2018年1月16日 
	 * 作用:获取元数据所属的五级结构（获取五级侧边栏菜单树数据） 
	 * 样例：
	 * 		业务系统
	 *			一级子系统
	 *				二级子系统
	 *					数据库
	 *		
	 *					三级子系统
	 *					
	 *						数据库
	 *						四级子系统
	 * "id": 5,
     * "label": "业务系统",
     * "children": [...]
	 */
	@RequestMapping(value = "/getSourceTableList", method = RequestMethod.GET)
	@ResponseBody
	@Log(operationType = "metadata_tablemapping", operationDesc = "获取数据仓库的数据库表列表  ")
	public JSONObject getSourceTableList(HttpServletRequest request,
			HttpServletResponse response) {
		JSONObject responsejson = new JSONObject();
		// if(!GlobalMethodAndParams.checkLogin()){
		// responsejson.put("result", false);
		// responsejson.put("count",0);
		// return responsejson;
		// }
//		GlobalMethodAndParams.setHttpServletResponse(request, response);
//
//		JSONArray data = new JSONArray();
//		int count = 0;
//		
//		//获得业务系统，数据仓库，ETL等节点列表
//		List<Sourcesystem> sourcesystemlist = sourcesystemService
//				.getAllSourcesystems();
//		//遍历业务系统，然后获取一级子系统列表
//		for (Sourcesystem sourcesystem : sourcesystemlist) {
//			//业务系统那一级 parentid为空
//			if(sourcesystem.getParentid()==null&&sourcesystem.getName().equals("业务系统")){
//				//一级列表JSONObject对象
//				JSONObject zeroJson = new JSONObject();
//				zeroJson.put("value", sourcesystem.getId());
//				zeroJson.put("label", sourcesystem.getName());
//				JSONArray zeroChild = new JSONArray();//在一级子系统列表中相当于data
//				
//				//计数器加一
//				count++;
//				//获得一级子系统列表
//				List<Sourcesystem> oneList = sourcesystemService.getAllSourcesystemsByParentId(sourcesystem.getId());
//				if(oneList!=null){
//					
//					//遍历一级子系统列表
//					for (Sourcesystem oneSourceSystem : oneList) {
//						//二级列表JSONObject对象
//						JSONObject oneJson = new JSONObject();
//						oneJson.put("value", oneSourceSystem.getId());
//						oneJson.put("label", oneSourceSystem.getName());
//						JSONArray oneChild = new JSONArray();
//						
//						//计数器加一
//						count++;
//						//获得二级子系统列表
//						List<Sourcesystem> twoList = sourcesystemService.getAllSourcesystemsByParentId(oneSourceSystem.getId());
//						if(twoList!=null){
//							
//							//遍历二级子系统列表
//							for (Sourcesystem twoSourceSystem : twoList) {
//								//三级列表JSONObject对象
//								JSONObject twoJson = new JSONObject();
//								twoJson.put("value", twoSourceSystem.getId());
//								twoJson.put("label", twoSourceSystem.getName());
//								JSONArray twoChild = new JSONArray();
//								
//								//计数器加一
//								count++;
//								//查询二级子系统下是否有数据库，有，则查询connectinfo表获取数据库列表
//								List<Connectinfo> oneDataBaseList = connectinfoService.getConnectinfoListByparentid(twoSourceSystem.getId());
//								//不为空，则遍历datasource_connectinfo表，获取每个connectinfo记录对应的数据库名称
//								if(oneDataBaseList!=null){
//									for (Connectinfo connectinfo : oneDataBaseList) {
//										//获得connectinfo表对应的datasource_connectinfo表记录
//										Datasource_connectinfo datasource_connectinfo = datasource_connectinfoService.getDatasource_connectinfoListByparentid(connectinfo.getId()).get(0);
//										//一级数据库列表JSONObject对象
//										JSONObject oneDBJson = new JSONObject();
//										oneDBJson.put("value", datasource_connectinfo.getId());
//										oneDBJson.put("label", datasource_connectinfo.getDatabasename());
//										JSONArray children = new JSONArray();
//										List<Metadata_relationtable> metadata_relationtableList = metadata_relationtableService.getMetadata_relationtableBydatasourceid(connectinfo.getId());
//										if(metadata_relationtableList!=null){
//											for (Metadata_relationtable metadata_relationtable : metadata_relationtableList) {
//												JSONObject tableNode = new JSONObject();
//												tableNode.put("value", metadata_relationtable.getId());
//												tableNode.put("label", metadata_relationtable.getName());
//												children.add(tableNode);
//											}
//										}
//										oneDBJson.put("children", children);
//										twoChild.add(oneDBJson);
//										
//										//计数器加一
//										count++;
//									}
//								}
//								//获得三级子系统列表
//								List<Sourcesystem> threeList = sourcesystemService.getAllSourcesystemsByParentId(twoSourceSystem.getId());
//								if(threeList!=null){
//									
//									//遍历三级子系统
//									for (Sourcesystem threeSourceSystem : threeList) {
//										//四级列表JSONObject对象
//										JSONObject threeJson = new JSONObject();
//										threeJson.put("value", threeSourceSystem.getId());
//										threeJson.put("label", threeSourceSystem.getName());
//										JSONArray threeChild = new JSONArray();
//										
//										//计数器加一
//										count++;
//										//查询三级子系统下是否有数据库，有，则查询connectinfo表获取数据库列表
//										List<Connectinfo> twoDataBaseList = connectinfoService.getConnectinfoListByparentid(threeSourceSystem.getId());
//										//不为空，则遍历datasource_connectinfo表，获取每个connectinfo记录对应的数据库名称
//										if(twoDataBaseList!=null){
//											for (Connectinfo connectinfo : twoDataBaseList) {
//												//获得connectinfo表对应的datasource_connectinfo表记录
//												Datasource_connectinfo datasource_connectinfo = datasource_connectinfoService.getDatasource_connectinfoListByparentid(connectinfo.getId()).get(0);
//												//二级数据库列表JSONObject对象
//												JSONObject twoDBJson = new JSONObject();
//												twoDBJson.put("value", datasource_connectinfo.getId());
//												twoDBJson.put("label", datasource_connectinfo.getDatabasename());
//												JSONArray children = new JSONArray();
//												List<Metadata_relationtable> metadata_relationtableList = metadata_relationtableService.getMetadata_relationtableBydatasourceid(connectinfo.getId());
//												if(metadata_relationtableList!=null){
//													
//													for (Metadata_relationtable metadata_relationtable : metadata_relationtableList) {
//														JSONObject tableNode = new JSONObject();
//														tableNode.put("value", metadata_relationtable.getId());
//														tableNode.put("label", metadata_relationtable.getName());
//														children.add(tableNode);
//													}
//												}
//												twoDBJson.put("children", children);
//												threeChild.add(twoDBJson);
//												
//												//计数器加一
//												count++;
//											}
//										}
//										//获得四级子系统列表
//										List<Sourcesystem> fourList = sourcesystemService.getAllSourcesystemsByParentId(threeSourceSystem.getId());
//										if(fourList!=null){
//											
//											//遍历四级子系统列表
//											for (Sourcesystem fourSourceSystem : fourList) {
//												//计数器加一
//												count++;
//												//封装数据
//												JSONObject fourJson = new JSONObject();
//												fourJson.put("value", fourSourceSystem.getId());
//												fourJson.put("label", fourSourceSystem.getName());
//												threeChild.add(fourJson);
//												
//											}
//										}
//										threeJson.put("children", threeChild);
//										twoChild.add(threeJson);
//									}
//								}
//								twoJson.put("children", twoChild);
//								oneChild.add(twoJson);
//							}
//						}
//						oneJson.put("children", oneChild);
//						zeroChild.add(oneJson);
//					}
//				}
//				zeroJson.put("children", zeroChild);
//				data.add(zeroJson);
//			}
//		}

		responsejson.put("result", true);
//		responsejson.put("data", data);
//		responsejson.put("count", count);
		return responsejson;
	}
	
	/**
	 * 
	 * 作者:itcoder 
	 * 时间:2018年1月16日 
	 * 作用:获取元数据所属的五级结构（获取五级侧边栏菜单树数据） 
	 * 样例：
	 * 		业务系统
	 *			一级子系统
	 *				二级子系统
	 *					数据库
	 *		
	 *					三级子系统
	 *					
	 *						数据库
	 *						四级子系统
	 * "id": 5,
     * "label": "业务系统",
     * "children": [...]
	 */
	@RequestMapping(value = "/getTargetTableList", method = RequestMethod.GET)
	@ResponseBody
	@Log(operationType = "metadata_tablemapping", operationDesc = "获取数据仓库的数据库表列表  ")
	public JSONObject getTargetTableList(HttpServletRequest request,
			HttpServletResponse response) {
		JSONObject responsejson = new JSONObject();
		// if(!GlobalMethodAndParams.checkLogin()){
		// responsejson.put("result", false);
		// responsejson.put("count",0);
		// return responsejson;
		// }
		GlobalMethodAndParams.setHttpServletResponse(request, response);

		JSONArray data = new JSONArray();
//		int count = 0;
//		
//		//获得业务系统，数据仓库，ETL等节点列表
//		List<Sourcesystem> sourcesystemlist = sourcesystemService
//				.getAllSourcesystems();
//		//遍历业务系统，然后获取一级子系统列表
//		for (Sourcesystem sourcesystem : sourcesystemlist) {
//			//业务系统那一级 parentid为空
//			if(sourcesystem.getParentid()==null&&sourcesystem.getName().equals("数据仓库")){
//				//一级列表JSONObject对象
//				JSONObject zeroJson = new JSONObject();
//				zeroJson.put("value", sourcesystem.getId());
//				zeroJson.put("label", sourcesystem.getName());
//				JSONArray zeroChild = new JSONArray();//在一级子系统列表中相当于data
//				
//				//计数器加一
//				count++;
//				//获得一级子系统列表
//				List<Sourcesystem> oneList = sourcesystemService.getAllSourcesystemsByParentId(sourcesystem.getId());
//				if(oneList!=null){
//					
//					//遍历一级子系统列表
//					for (Sourcesystem oneSourceSystem : oneList) {
//						//二级列表JSONObject对象
//						JSONObject oneJson = new JSONObject();
//						oneJson.put("value", oneSourceSystem.getId());
//						oneJson.put("label", oneSourceSystem.getName());
//						JSONArray oneChild = new JSONArray();
//						
//						//计数器加一
//						count++;
//						//获得二级子系统列表
//						List<Sourcesystem> twoList = sourcesystemService.getAllSourcesystemsByParentId(oneSourceSystem.getId());
//						if(twoList!=null){
//							
//							//遍历二级子系统列表
//							for (Sourcesystem twoSourceSystem : twoList) {
//								//三级列表JSONObject对象
//								JSONObject twoJson = new JSONObject();
//								twoJson.put("value", twoSourceSystem.getId());
//								twoJson.put("label", twoSourceSystem.getName());
//								JSONArray twoChild = new JSONArray();
//								
//								//计数器加一
//								count++;
//								//查询二级子系统下是否有数据库，有，则查询connectinfo表获取数据库列表
//								List<Connectinfo> oneDataBaseList = connectinfoService.getConnectinfoListByparentid(twoSourceSystem.getId());
//								//不为空，则遍历datasource_connectinfo表，获取每个connectinfo记录对应的数据库名称
//								if(oneDataBaseList!=null){
//									for (Connectinfo connectinfo : oneDataBaseList) {
//										//获得connectinfo表对应的datasource_connectinfo表记录
//										List<Datasource_connectinfo> datasource_connectinfoList = datasource_connectinfoService.getDatasource_connectinfoListByparentid(connectinfo.getId());
//										if(datasource_connectinfoList!=null){
//											Datasource_connectinfo datasource_connectinfo = datasource_connectinfoList.get(0);
//											//一级数据库列表JSONObject对象
//											JSONObject oneDBJson = new JSONObject();
//											oneDBJson.put("value", datasource_connectinfo.getId());
//											oneDBJson.put("label", datasource_connectinfo.getDatabasename());
//											JSONArray children = new JSONArray();
//											List<Metadata_relationtable> metadata_relationtableList = metadata_relationtableService.getMetadata_relationtableBydatasourceid(connectinfo.getId());
//											if(metadata_relationtableList!=null){
//												for (Metadata_relationtable metadata_relationtable : metadata_relationtableList) {
//													JSONObject tableNode = new JSONObject();
//													tableNode.put("value", metadata_relationtable.getId());
//													tableNode.put("label", metadata_relationtable.getName());
//													children.add(tableNode);
//												}
//											}
//											oneDBJson.put("children", children);
//											twoChild.add(oneDBJson);
//											
//											//计数器加一
//											count++;
//										}
//									}
//								}
//								//获得三级子系统列表
//								List<Sourcesystem> threeList = sourcesystemService.getAllSourcesystemsByParentId(twoSourceSystem.getId());
//								if(threeList!=null){
//									
//									//遍历三级子系统
//									for (Sourcesystem threeSourceSystem : threeList) {
//										//四级列表JSONObject对象
//										JSONObject threeJson = new JSONObject();
//										threeJson.put("value", threeSourceSystem.getId());
//										threeJson.put("label", threeSourceSystem.getName());
//										JSONArray threeChild = new JSONArray();
//										
//										//计数器加一
//										count++;
//										//查询三级子系统下是否有数据库，有，则查询connectinfo表获取数据库列表
//										List<Connectinfo> twoDataBaseList = connectinfoService.getConnectinfoListByparentid(threeSourceSystem.getId());
//										//不为空，则遍历datasource_connectinfo表，获取每个connectinfo记录对应的数据库名称
//										if(twoDataBaseList!=null){
//											for (Connectinfo connectinfo : twoDataBaseList) {
//												//获得connectinfo表对应的datasource_connectinfo表记录
//												Datasource_connectinfo datasource_connectinfo = datasource_connectinfoService.getDatasource_connectinfoListByparentid(connectinfo.getId()).get(0);
//												//二级数据库列表JSONObject对象
//												JSONObject twoDBJson = new JSONObject();
//												twoDBJson.put("value", datasource_connectinfo.getId());
//												twoDBJson.put("label", datasource_connectinfo.getDatabasename());
//												JSONArray children = new JSONArray();
//												List<Metadata_relationtable> metadata_relationtableList = metadata_relationtableService.getMetadata_relationtableBydatasourceid(connectinfo.getId());
//												if(metadata_relationtableList!=null){
//													
//													for (Metadata_relationtable metadata_relationtable : metadata_relationtableList) {
//														JSONObject tableNode = new JSONObject();
//														tableNode.put("value", metadata_relationtable.getId());
//														tableNode.put("label", metadata_relationtable.getName());
//														children.add(tableNode);
//													}
//												}
//												twoDBJson.put("children", children);
//												threeChild.add(twoDBJson);
//												
//												//计数器加一
//												count++;
//											}
//										}
//										//获得四级子系统列表
//										List<Sourcesystem> fourList = sourcesystemService.getAllSourcesystemsByParentId(threeSourceSystem.getId());
//										if(fourList!=null){
//											
//											//遍历四级子系统列表
//											for (Sourcesystem fourSourceSystem : fourList) {
//												//计数器加一
//												count++;
//												//封装数据
//												JSONObject fourJson = new JSONObject();
//												fourJson.put("value", fourSourceSystem.getId());
//												fourJson.put("label", fourSourceSystem.getName());
//												threeChild.add(fourJson);
//												
//											}
//										}
//										threeJson.put("children", threeChild);
//										twoChild.add(threeJson);
//									}
//								}
//								twoJson.put("children", twoChild);
//								oneChild.add(twoJson);
//							}
//						}
//						oneJson.put("children", oneChild);
//						zeroChild.add(oneJson);
//					}
//				}
//				zeroJson.put("children", zeroChild);
//				data.add(zeroJson);
//			}
//		}

		responsejson.put("result", true);
		responsejson.put("data", data);
//		responsejson.put("count", count);
		return responsejson;
	}
	
	/**
	 * 
	 * 作者:GodDispose
	 * 时间:2017年12月14日
	 * 作用:插入更新一条记录
	 * 参数：srctableid,srcfieldid,targettableid,targetfieldid
	 */
	@RequestMapping(value = "/insertMapping",method=RequestMethod.POST)
	@ResponseBody
	@Log(operationType="metadata_tablemapping",operationDesc="插入更新一条记录")
	public JSONObject insertMapping(HttpServletRequest request,HttpServletResponse response,@RequestBody Map<String, Object> map){
		JSONObject responsejson = new JSONObject();

//		if(!GlobalMethodAndParams.checkLogin()){
//			responsejson.put("result", false);
//			responsejson.put("count",0);
//			return responsejson;
//		}
		GlobalMethodAndParams.setHttpServletResponse(request, response);
		
		//检查传参是否正确
		if(!(map.containsKey("srctableid") && map.containsKey("srcfieldid") 
				&&  map.containsKey("targettableid") && map.containsKey("targetfieldid"))){
			responsejson.put("result", false);
			responsejson.put("count",0);
			return responsejson;
		}

		String srctableidstr = map.get("srctableid").toString();
		String srcfieldidstr = map.get("srcfieldid").toString();
		String targettableidstr = map.get("targettableid").toString();
		String targetfieldidstr = map.get("targetfieldid").toString();
		int srctableid = 0;
		int srcfieldid = 0;
		int targettableid = 0;
		int targetfieldid = 0;
		try {
			srctableid = Integer.parseInt(srctableidstr);
			srcfieldid = Integer.parseInt(srcfieldidstr);
			targettableid = Integer.parseInt(targettableidstr);
			targetfieldid = Integer.parseInt(targetfieldidstr);
			if(metadata_tablefieldmappingService.getMetadata_tablefieldmappingBytargetfieldid(targetfieldid) == null){
				metadata_tablefieldmappingService.insertMetadata_tablefieldmapping(
						new Metadata_tablefieldmapping(srctableid,srcfieldid,targettableid,targetfieldid));
			}else{
				metadata_tablefieldmappingService.updateMetadata_tablefieldmapping(
						new Metadata_tablefieldmapping(srctableid,srcfieldid,targettableid,targetfieldid));
			}
			
			responsejson.put("result", true);
			responsejson.put("count",1);
		} catch (Exception e) {
			e.printStackTrace();
			responsejson.put("result", false);
			responsejson.put("count",0);
		}			

		return responsejson;
	}
	
	/**
	 * 
	 * 作者:GodDispose
	 * 时间:2017年12月26日
	 * 作用:获取目标系统数据库
	 */
	@RequestMapping(value = "/getTargetDatabase",method=RequestMethod.GET)
	@ResponseBody
	@Log(operationType="datasource_connectinfo",operationDesc="获取目标系统数据库")
	public JSONObject getTargetDatabase(HttpServletRequest request,HttpServletResponse response){
		JSONObject responsejson = new JSONObject();

//		if(!GlobalMethodAndParams.checkLogin()){
//			responsejson.put("result", false);
//			responsejson.put("count",0);
//			return responsejson;
//		}
		GlobalMethodAndParams.setHttpServletResponse(request, response);
		
		try{
			JSONArray data = datasource_connectinfoService.getTargetDatabase();
			
			responsejson.put("result", true);
			responsejson.put("data", data);
			responsejson.put("count",data.size());
		} catch (Exception e) {
			e.printStackTrace();
			responsejson.put("result", false);
			responsejson.put("count",0);
		}			

		return responsejson;
	}
	
	/**
	 * 
	 * 作者:GodDispose
	 * 时间:2017年1月3日
	 * 作用:根据字段映射id获取字段映射信息
	 */
	@RequestMapping(value = "/getFieldMapping",method=RequestMethod.POST)
	@ResponseBody
	@Log(operationType="metadata_tablefieldmapping",operationDesc="根据字段映射id获取字段映射信息")
	public JSONObject getFieldMapping(HttpServletRequest request,HttpServletResponse response,@RequestBody Map<String, Object> map){
		JSONObject responsejson = new JSONObject();

//		if(!GlobalMethodAndParams.checkLogin()){
//			responsejson.put("result", false);
//			responsejson.put("count",0);
//			return responsejson;
//		}
		GlobalMethodAndParams.setHttpServletResponse(request, response);
		
		//检查传参是否正确
		if(!map.containsKey("id")){
			responsejson.put("result", false);
			responsejson.put("count",0);
			return responsejson;
		}
		String idStr = map.get("id").toString();
		int id = 0;
		try{
			id = Integer.parseInt(idStr);
			
			Metadata_relationtable metadata_relationtable = metadata_relationtableService.getMetadata_relationtableByid(id);
	
			JSONArray data = new JSONArray();
			JSONObject metadata_name = new JSONObject();
			metadata_name.put("key", "元数据名称");
			metadata_name.put("value", metadata_relationtable.getName());
			data.add(metadata_name);
			
			JSONObject metadata_modelpackage = new JSONObject();
			metadata_modelpackage.put("key", "所属元模型包");
			metadata_modelpackage.put("value", "ETL元模型");
			data.add(metadata_modelpackage);
			
			JSONObject metadata_model = new JSONObject();
			metadata_model.put("key", "所属元模型");
			metadata_model.put("value","关系表字段映射");
			data.add(metadata_model);
			
			responsejson.put("result", true);
			responsejson.put("data", data);
			responsejson.put("count",data.size());
		} catch (Exception e) {
			e.printStackTrace();
			responsejson.put("result", false);
			responsejson.put("count",0);
		}			

		return responsejson;
	}
	
	/**
	 * 
	 * 作者:GodDispose
	 * 时间:2017年1月3日
	 * 作用:获取字段映射数据
	 */
	@RequestMapping(value = "/getTableFieldMapping",method=RequestMethod.POST)
	@ResponseBody
	@Log(operationType="metadata_tablefieldmapping",operationDesc="获取字段映射数据")
	public JSONObject getTableFieldMapping(HttpServletRequest request,HttpServletResponse response,@RequestBody Map<String, Object> map ){
		JSONObject responsejson = new JSONObject();

//		if(!GlobalMethodAndParams.checkLogin()){
//			responsejson.put("result", false);
//			responsejson.put("count",0);
//			return responsejson;
//		}
		GlobalMethodAndParams.setHttpServletResponse(request, response);
		
//		//检查传参是否正确
//				if(!map.containsKey("id")){
//					responsejson.put("result", false);
//					responsejson.put("count",0);
//					return responsejson;
//				}
//				
//				String idstr = map.get("id").toString();
//				int id = 0;
//				try {
//					id = Integer.parseInt(idstr);
//					
//					List<Metadata_tablefieldmapping> metadata_tablefieldmappings = metadata_tablefieldmappingService.getMetadata_tablefieldmappingBytargettableid(id);
//					JSONArray data = new JSONArray();
//					
//					for(Metadata_tablefieldmapping metadata_tablefieldmapping : metadata_tablefieldmappings){
//						JSONObject node = new JSONObject();
//						node.put("id", metadata_tablefieldmapping.getId());
//						node.put("targetSystem",datasource_connectinfoService.getPath(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getTargettableid()).getDatasource_connectinfoid()));
//						node.put("targetDatasource",connectinfoService.getConnectinfoByid(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getTargettableid()).getDatasource_connectinfoid()).getName());
//						node.put("targetDatabase", datasource_connectinfoService.getDatasource_connectinfoListByparentid(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getTargettableid()).getDatasource_connectinfoid()).get(0).getDatabasename());
//						node.put("targetTables", metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getTargettableid()).getName());
//						node.put("targetField", metadata_tablefieldService.getMetadata_tablefieldByid(metadata_tablefieldmapping.getTargetfieldid()).getName());
//						node.put("targetFieldDescription",metadata_tablefieldService.getMetadata_tablefieldByid(metadata_tablefieldmapping.getTargetfieldid()).getDesribe());
//						
//						node.put("sourceSystem",datasource_connectinfoService.getPath(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getSrctableid()).getDatasource_connectinfoid())) ;
//						node.put("sourceDatasource", connectinfoService.getConnectinfoByid(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getSrctableid()).getDatasource_connectinfoid()).getName());
//						node.put("sourceDatabase", datasource_connectinfoService.getDatasource_connectinfoListByparentid(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getSrctableid()).getDatasource_connectinfoid()).get(0).getDatabasename());
//						node.put("sourceTables", metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getSrctableid()).getName());
//						node.put("sourceField", metadata_tablefieldService.getMetadata_tablefieldByid(metadata_tablefieldmapping.getSrcfieldid()).getName());
//						node.put("sourceFieldDescription", metadata_tablefieldService.getMetadata_tablefieldByid(metadata_tablefieldmapping.getSrcfieldid()).getDesribe());
//						data.add(node);
//					}
////					List<Metadata_tablefield> metadata_tablefieldList = metadata_tablefieldService.getMetadata_tablefieldListById(id);
////					
////					JSONArray data = new JSONArray();
////					for(Metadata_tablefield metadata_tablefield : metadata_tablefieldList){
////						JSONObject node = new JSONObject();
////						node.put("id", metadata_tablefield.getId());
////						node.put("targetSystem",datasource_connectinfoService.getPath(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefield.getMetadata_relationtableid()).getDatasource_connectinfoid()));
////						node.put("targetDatasource",connectinfoService.getConnectinfoByid(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefield.getMetadata_relationtableid()).getDatasource_connectinfoid()).getName());
////						node.put("targetDatabase", datasource_connectinfoService.getDatasource_connectinfoListByparentid(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefield.getMetadata_relationtableid()).getDatasource_connectinfoid()).get(0).getDatabasename());
////						node.put("targetTables", metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefield.getMetadata_relationtableid()).getName());
////						node.put("targetField", metadata_tablefield.getName());
////						node.put("targetFieldDescription", metadata_tablefield.getDesribe());
////						if(metadata_tablefieldmappingService.judgeMetadata_tablefieldmappingBytargetfieldid(metadata_tablefield.getId())){
////							Metadata_tablefieldmapping metadata_tablefieldmapping = metadata_tablefieldmappingService.getMetadata_tablefieldmappingBytargetfieldid(metadata_tablefield.getId());
////							node.put("sourceSystem", sourcesystemService.getSourcesystemsById(connectinfoService.getConnectinfoByid(datasource_connectinfoService.getDatasource_connectinfoByid(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getSrctableid()).getDatasource_connectinfoid()).getParentid()).getParentid()).getName());
////							node.put("sourceDatasource", connectinfoService.getConnectinfoByid(datasource_connectinfoService.getDatasource_connectinfoByid(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getSrctableid()).getDatasource_connectinfoid()).getParentid()).getName());
////							node.put("sourceDatabase", datasource_connectinfoService.getDatasource_connectinfoByid(metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getSrctableid()).getDatasource_connectinfoid()).getDatabasename());
////							node.put("sourceTables", metadata_relationtableService.getMetadata_relationtableByid(metadata_tablefieldmapping.getSrctableid()).getName());
////							node.put("sourceField", metadata_tablefieldService.getMetadata_tablefieldByid(metadata_tablefieldmapping.getSrcfieldid()).getName());
////							node.put("sourceFieldDescription", metadata_tablefieldService.getMetadata_tablefieldByid(metadata_tablefieldmapping.getSrcfieldid()).getDesribe());
////						}else{
////							node.put("sourceSystem",null);					
////							node.put("sourceDatasource",null);
////							node.put("sourceDatabase", null);
////							node.put("sourceTables", null);
////							node.put("sourceField", null);
////							node.put("sourceFieldDescription", null);
////						}
////						data.add(node);
////					}
//			
//			responsejson.put("result", true);
//			responsejson.put("data", data);
//			responsejson.put("count",data.size());
//		} catch (Exception e) {
//			e.printStackTrace();
//			responsejson.put("result", false);
//			responsejson.put("count",0);
//		}			

		return responsejson;
	}
}

